मैं सी ++ डीएलएल को कॉल करके एक पायथन ऐप डिज़ाइन कर रहा हूं, मैंने अपने डीएलएल और पायथन 3.4 here के बीच अपनी बातचीत पोस्ट की है। लेकिन अब मुझे थ्रेडिंग आधारित मॉडल को शामिल करने में स्ट्रीमिंग में कुछ प्रक्रिया करने की ज़रूरत है और मेरा कॉलबैक फ़ंक्शन सभी print
एस कतार में डालने लगता है और केवल जब मेरी स्ट्रीमिंग समाप्त हो जाती है, तो सभी जानकारी मुद्रित होती है।एक सी ++ आधारित थ्रेडिंग मॉडल में पायथन 'प्रिंट'
def callbackU(OutList, ConList, nB):
for i in range(nB):
out_list_item = cast(OutList[i], c_char_p).value
print("{}\t{}".format(ConList[i], out_list_item))
return 0
मैं अगले तरीके का उपयोग करने की कोशिश की है, लेकिन उन सभी को एक ही तरीके से काम करने के लिए लग रहा है:
from threading import Lock
print_lock = Lock()
def save_print(*args, **kwargs):
with print_lock:
print (*args, **kwargs)
def callbackU(OutList, ConList, nB):
for i in range(nB):
out_list_item = cast(OutList[i], c_char_p).value
save_print(out_list_item))
return 0
और:
import sys
def callbackU(OutList, ConList, nB):
for i in range(nB):
a = cast(OutList[i], c_char_p).value
sys.stdout.write(a)
sys.stdout.flush()
return 0
मुझे लगता है कि चाहते हैं मेरी कॉलबैक जब इसे कहा जाता है तो उसका संदेश प्रिंट करता है, न कि जब पूरी प्रक्रिया समाप्त होती है।
कृपया अपने प्रश्न को दोबारा लिखें, जैसे कि प्राकृतिक भाषा में, मैं कुछ समझ नहीं पाया! –
ठीक है, ऐसा इसलिए है क्योंकि मैं मूल निवासी नहीं हूं, लेकिन क्या आप मेरा अन्य प्रश्न समझ सकते हैं? या क्या मुझे दूसरे को भी बेहतर समझा जाना चाहिए? –
ओटी: लगभग कोई भी "मेरा अन्य प्रश्न" लिंक नहीं पढ़ता है, इसके बजाय लागू सारांश शामिल करना बेहतर है। दूसरी तरफ, जाने-माने विषयों या संसाधनों (जैसे विकी: डीएजी, या पीपीआई: सीएफआई) से जुड़ना स्वागत है। –