Ich bin neu in Python, also bitte entschuldigen Sie meine Ignoranz. Ich versuche, einen Prozess zur gleichen Zeit wie meine Hauptdatei auszuführen. Der Anwendungsfall, den ich habe, ist, dass ich die Punkte eines Spiels (Hinzufügen/Anpassen von Punkten für alle Benutzer) gleichzeitig ändern möchte, dass meine Flasch/Python-App CRUD-Anfragen akzeptiert. I könnte wahrscheinlich nur dies für einen Mitternachtslauf oder etwas planen, aber in Zukunft möchte ich möglicherweise mehrere Änderungen an den Punkten abhängig von Benutzereingaben vornehmen. Grundsätzlich möchte ich jedoch eine Art Threading-Funktion verwenden.Threading Blocks Haupt in Python
Leider blockiert mein Thread den Betrieb von Main. Ich bin mir nicht sicher, warum, denn ich hatte gedacht, der ganze Punkt des Threads war, dass er gleichzeitig lief.
Hier ist, wie ich meine Funktion von Haupt nennen:
i = Inflate('pants')
i.timermethod()
Hier ist die Klasse und Methode ist, wie ich sie definiert haben:
from flask_restful import abort, reqparse, Resource
from marshmallow import Schema, fields, ValidationError, pre_load
from flask import Flask, Blueprint, request, jsonify
from flask_cors import CORS, cross_origin
import psycopg2
import os
from os.path import join, dirname
import threading
from time import sleep
class Inflate:
def __init__(self, s):
self.s = s
def printtest(self):
print('insided the printtest for inflation')
def hello(self, h):
print h + self.s
def timermethod(self):
h="hello there "
for i in range(5):
t = threading.Thread(target=self.hello, args=(h,))
t.start()
sleep(2)
Die Ausgabe ist, dass „hallo dort Hosen“ ist 5 mal gedruckt, bevor meine Hauptfunktion ausgeführt wird, während ich erwarten würde, dass "hallo da pants" vielleicht einmal gedruckt wird, andere Ausgaben von main sehen, wie es zur gleichen Zeit läuft, und dann "hallo da pants", um weiterzumachen.
Bitte lassen Sie mich wissen, wenn Sie irgendwelche Ideen haben, bin ich fest.
Sie schlafen für 2 nach jedem Thread-Start, so dass jeder von ihnen zu der Zeit, die Sie als nächstes beginnen werden, Schlaf zu entfernen, und Sie sehen Ergebnisse, die mehr mit Ihren Erwartungen übereinstimmen, aber dann wieder Ihre Threads tun so wenig, dass sie wird fertig sein, bevor du ein anderes startest, also wirst du wahrscheinlich immer noch 5 'hallo' sehen – user3012759
ok, aber wie stelle ich dann alle n Sekunden eine Wartebedingung auf den Thread ein, der die Hauptleitung nicht blockiert? Ich muss einige Zeit warten, bevor ich einen anderen Thread irgendwie ausführe. –
Warum müssen Sie warten? – user3012759