ওপি matplotlib
প্লটগুলি পৃথকীকরণের বিষয়ে জিজ্ঞাসা করে । বেশিরভাগ উত্তর একটি অজগর দোভাষী দ্বারা কমান্ড কার্যকর করা অনুমান করে। এখানে উপস্থাপিত ইউজ-কেসটি এমন একটি টার্মিনাল (যেমন বাশ) এর টেস্টিং কোডের জন্য আমার পছন্দ, যেখানে file.py
আপনি চালিত হন এবং আপনি প্লট (গুলি) আসতে চান তবে পাইথন স্ক্রিপ্টটি সম্পূর্ণ হয়ে কমান্ড প্রম্পটে ফিরে আসে return
এই একা ফাইলটি multiprocessing
ডেটা প্লট করার জন্য একটি পৃথক প্রক্রিয়া চালু করতে ব্যবহার করে matplotlib
। মূল থ্রেড এই পোস্টে os._exit(1)
উল্লিখিত ব্যবহার করে প্রস্থান করে । প্রস্থান কিন্তু পাতার প্রধান বাহিনী শিশু প্রক্রিয়া জীবিত এবং প্রতিক্রিয়াশীল পর্যন্ত চক্রান্ত উইন্ডো বন্ধ করা হয়। এটি সম্পূর্ণ পৃথক প্রক্রিয়া।os._exit()
matplotlib
এই পদ্ধতির মত কিছুটা মতলব বিকাশ সেশনের মতো ফিগার উইন্ডো যা প্রতিক্রিয়াশীল কমান্ড প্রম্পট নিয়ে আসে। এই পদ্ধতির সাথে, আপনি চিত্র উইন্ডো প্রক্রিয়াটির সাথে সমস্ত যোগাযোগ হারিয়ে ফেলেছেন, তবে, এটি উন্নয়ন এবং ডিবাগিংয়ের জন্য ঠিক। কেবল উইন্ডোটি বন্ধ করুন এবং পরীক্ষা চালিয়ে যান।
multiprocessing
পাইথন-কেবল কোড এক্সিকিউশনের জন্য ডিজাইন করা হয়েছে যা এটি এর চেয়ে সম্ভবত আরও উপযুক্ত subprocess
। multiprocessing
ক্রস প্ল্যাটফর্ম তাই এটি উইন্ডোজ বা ম্যাকের সামান্য বা কোনও সামঞ্জস্যের সাথে ভালভাবে কাজ করা উচিত। অন্তর্নিহিত অপারেটিং সিস্টেমটি পরীক্ষা করার দরকার নেই। এটি লিনাক্স, উবুন্টু 18.04LTS এ পরীক্ষা করা হয়েছিল।
#!/usr/bin/python3
import time
import multiprocessing
import os
def plot_graph(data):
from matplotlib.pyplot import plot, draw, show
print("entered plot_graph()")
plot(data)
show() # this will block and remain a viable process as long as the figure window is open
print("exiting plot_graph() process")
if __name__ == "__main__":
print("starting __main__")
multiprocessing.Process(target=plot_graph, args=([1, 2, 3],)).start()
time.sleep(5)
print("exiting main")
os._exit(0) # this exits immediately with no cleanup or buffer flushing
রানিং file.py
একটি চিত্র উইন্ডো নিয়ে আসে, তারপরে __main__
প্রস্থান করে তবে multiprocessing
+ matplotlib
চিত্র উইন্ডোটি জুম, প্যান এবং অন্যান্য বোতামগুলির সাথে প্রতিক্রিয়াশীল থাকে কারণ এটি একটি স্বতন্ত্র প্রক্রিয়া।
এর সাথে ব্যাশ কমান্ড প্রম্পটে প্রক্রিয়াগুলি পরীক্ষা করুন:
ps ax|grep -v grep |grep file.py
ion()
সমাধান হয়।