คำถามติดแท็ก python-multithreading

19
ฉันจะใช้เธรดใน Python ได้อย่างไร
ฉันพยายามเข้าใจเธรดใน Python ฉันได้ดูเอกสารและตัวอย่าง แต่ค่อนข้างตรงไปตรงมาตัวอย่างมากมายซับซ้อนเกินไปและฉันมีปัญหาในการทำความเข้าใจ คุณแสดงให้เห็นอย่างชัดเจนถึงภารกิจที่ถูกแบ่งเป็นหลายเธรดได้อย่างไร

14
หมดเวลาในการเรียกใช้ฟังก์ชัน
ฉันกำลังเรียกใช้ฟังก์ชันใน Python ซึ่งฉันรู้ว่าอาจหยุดและบังคับให้ฉันรีสตาร์ทสคริปต์ ฉันจะเรียกฟังก์ชั่นได้อย่างไรหรือฉันจะปิดมันเพื่อที่ว่าถ้ามันใช้เวลานานกว่า 5 วินาทีสคริปต์จะยกเลิกมันและทำอย่างอื่น?

7
Daemon เธรดคำอธิบาย
ในเอกสารประกอบของ Python มันบอกว่า: เธรดสามารถถูกแฟล็กเป็น "daemon thread" ความสำคัญของการตั้งค่าสถานะนี้คือโปรแกรม Python ทั้งหมดจะออกเมื่อเหลือเพียง daemon thread เท่านั้น ค่าเริ่มต้นจะสืบทอดมาจากการสร้างหัวข้อ ใครบ้างมีคำอธิบายที่ชัดเจนของสิ่งที่หมายถึงหรือตัวอย่างในทางปฏิบัติแสดงให้เห็นว่าคุณจะตั้งหัวข้อเป็นdaemonic? ชี้แจงให้ฉัน: ดังนั้นสถานการณ์เดียวที่คุณจะไม่ตั้งกระทู้เป็นdaemonicคือเมื่อคุณต้องการให้พวกเขาทำงานต่อไปหลังจากที่ออกจากหัวข้อหลัก?

10
การใช้ join () ในเธรด Python คืออะไร
ฉันกำลังศึกษาเกลียวหลามและพบjoin()ว่า ผู้เขียนบอกว่าหากเธรดอยู่ในโหมด daemon ฉันต้องใช้join()เพื่อให้เธรดสามารถเสร็จสิ้นได้ก่อนที่เธรดหลักจะยุติ แต่ฉันก็เห็นเขาใช้อยู่t.join()แม้ว่าจะtไม่ใช่daemon รหัสตัวอย่างนี้คือ import threading import time import logging logging.basicConfig(level=logging.DEBUG, format='(%(threadName)-10s) %(message)s', ) def daemon(): logging.debug('Starting') time.sleep(2) logging.debug('Exiting') d = threading.Thread(name='daemon', target=daemon) d.setDaemon(True) def non_daemon(): logging.debug('Starting') logging.debug('Exiting') t = threading.Thread(name='non-daemon', target=non_daemon) d.start() t.start() d.join() t.join() ฉันไม่รู้ว่าใช้t.join()อะไรเพราะไม่ใช่ภูตและฉันไม่เห็นการเปลี่ยนแปลงแม้ว่าฉันจะลบออก

8
วิธีค้นหา thread id ใน Python
ฉันมีโปรแกรม Python แบบมัลติเธรดและฟังก์ชันยูทิลิตี้writeLog(message)ที่เขียนการประทับเวลาตามด้วยข้อความ น่าเสียดายที่ไฟล์บันทึกผลลัพธ์แสดงว่าไม่มีการระบุว่าเธรดใดกำลังสร้างข้อความใด ฉันต้องการwriteLog()เพิ่มบางสิ่งบางอย่างในข้อความเพื่อระบุว่าเธรดใดกำลังเรียกใช้ เห็นได้ชัดว่าฉันสามารถทำให้กระทู้ผ่านข้อมูลนี้ แต่นั่นจะทำงานได้มากขึ้น มีเธรดเทียบเท่ากับos.getpid()ที่ฉันสามารถใช้ได้หรือไม่

4
รายการมีความปลอดภัยต่อเธรดหรือไม่
.pop()ผมสังเกตเห็นว่ามันก็มักจะแนะนำให้ใช้คิวที่มีหลายกระทู้แทนของรายการและ เป็นเพราะรายการไม่ปลอดภัยสำหรับเธรดหรือด้วยเหตุผลอื่น

6
จะยุติเธรดเมื่อโปรแกรมหลักสิ้นสุดได้อย่างไร?
ถ้าฉันมีเธรดในการวนซ้ำแบบไม่มีที่สิ้นสุดจะมีวิธียุติเธรดเมื่อโปรแกรมหลักสิ้นสุดลงหรือไม่ (เช่นเมื่อฉันกดCtrl+ C)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.