2011-11-13 89 views
0

我正在使用線程模塊來控制通過套接字發送數據的線程,而不是什麼,但是我找不到合適的解決方案來將數據傳遞到線程來處理。我已經嘗試了諸如Overriding python threading.Thread.run()之類的東西,但似乎無法使其正常工作。如果有人有任何建議,我會很樂意嘗試任何東西:)Python將變量傳遞到線程

謝謝!

回答

2

你正在考慮這個倒退。忘記它恰好是一個通過套接字發送數據的線程。數據不需要到達線程,它需要到達在套接字上發送數據的邏輯。

例如,您可以擁有一個隊列來保存需要通過套接字發送的內容。套接字寫入代碼從隊列中提取消息並將它們從套接字發送出去。其他代碼將消息放在此隊列中。需要將消息發送到套接字的代碼不應該知道或在意發生了發送的線程。

+0

更好:)謝謝你的 – Trent

1

爲此使用消息隊列。 Python具有用於在線程之間傳遞數據的Queue模塊,但如果使用第三方庫(如0MQ http://www.zeromq.org)代替,則可以將線程拆分爲單獨的進程,並且它將以相同的方式工作。

多處理比線程更容易完成,但是如果您必須使用線程,請儘可能避免鎖定和共享數據。而是使用像Queue這樣的預先寫好的模塊來限制可能產生微妙錯誤的方式。