PYGTK to PYGI: gtk.timeout_add সমতুল্য


9

আমি পাইথন কোডটিকে পিওয়িজিআই ব্যবহার করতে রূপান্তর করেছি তবে এই লাইনটি কীভাবে রূপান্তর করা যায় তা আমি বুঝতে পারি না:

gtk.timeout_add(PING_FREQUENCY * 1000, self.doWork)

স্পষ্টতই, যেহেতু আমি সত্যিই PYGTK এবং PYGI এর মধ্যে পার্থক্য জানি না, তাই আমার নতুন কোড ব্যবহার করে

from gi.repository import Gtk
from gi.repository import AppIndicator3 as appindicator

এখানে প্রদর্শিত হিসাবে https://wiki.ubuntu.com/DesktopExperienceTeam/ApplicationIndicators#Python_version

আমি যে পুরো কোডটি রূপান্তর করতে চাইছি তা এখানে http://pastebin.com/raw.php?i=aUtASRpy

এর সমতুল্য কি?

gtk.timeout_add(PING_FREQUENCY * 1000, self.doWork)

পিওয়িজি-তে?

আমি এটাও ধরে নিচ্ছি যে Yক্য সূচক তৈরির সবচেয়ে আধুনিক উপায় পিওয়াইজিআই

আমি আরও ধরে নিয়েছি যে সূচককে রাষ্ট্রকে কিছু বলার চেয়ে সূচকের পক্ষে কোনও কিছুর অবস্থা পরীক্ষা করা ভাল (পুশ বনাম টান)। অজগর প্রোগ্রামটি প্রতি সেকেন্ডে কিছু পরীক্ষা করা ঠিক আছে কি?

ধন্যবাদ!

উত্তর:


1

প্রতি ... ত্রুটি ... প্রশ্ন জিজ্ঞাসা করা ভাল।

পাইথনের স্ট্যান্ডার্ড লাইব্রেরিতে threadingমডিউল রয়েছে যার একটি Timerক্লাস রয়েছে যা আপনার প্রয়োজন মতো করে। ডকুমেন্টেশন

পুশ বনাম টান সম্পর্কে - এটি অবশ্যই ভাল যখন আপনার অ্যাপ্লিকেশনটি কোনও সেকেন্ডে (টানুন) কিছু ঘটেছিল কিনা তা পরীক্ষা করে দেখার পরিবর্তে কোনও কিছু ঘটে (ধাক্কা) পেলে - "আমরা এখনও সেখানে আছি? আমরা কি এখনও রয়েছি?" । "- কারণ এটি আপনার অ্যাপ্লিকেশনটিকে কেবলমাত্র ঘুমানোর অনুমতি দেয় এবং যতক্ষণ না এটি অবহিত করা হয় ততক্ষণ প্রতিটি সেকেন্ডে একই পুনরাবৃত্তি পরীক্ষা করার বিপরীতে। তবে বিষয়টি হ'ল কিছু ধরণের ক্রিয়াকলাপের জন্য একটি বিজ্ঞপ্তি পাওয়া জটিল হতে পারে, সুতরাং এটি আপনার আবেদনের প্রকৃতির উপর নির্ভর করে। খুব বেশি সময় চেক করা ব্যাটারি লাইফ এবং অন্যান্য জিনিসগুলির জন্যও খারাপ।


আপনাকে ধন্যবাদ, এটি আমাকে এই পেস্টবিন. com/raw.php?i=0jLxZ994 কে একসাথে হ্যাক করতে পরিচালিত করে স্ট্যাকওভারফ্লো / সিকিউশনস / ৯৮১২৪৪৪/২ থেকে বড় সহায়তায় তবে কীভাবে যেহেতু কিছু শ্রোতা তৈরি করতে হবে তা শিখার জন্য এখন সময় এসেছে আমি মনে করি বেশিরভাগ "পোল" আবিষ্কার করবে যে কিছুই পরিবর্তন করা হয়নি, তবে এটি অন্য সময়ের জন্য। ধন্যবাদ!
onBootQuestioner

19

Gtk উপায়টি একটি উত্তরে উপস্থিত রয়েছে তা নিশ্চিত করার জন্য:

এর সমতুল্য

gtk.timeout_add(PING_FREQUENCY * 1000, self.doWork)

গবজেক্ট ইন্ট্রোস্পেকশন (পাইজিআই) ইন:

from gi.repository import GLib
GLib.timeout_add(PING_FREQUENCY * 1000, self.doWork)

তবে, প্রতি এক্স সেকেন্ডে নিয়মিত কিছু পরীক্ষা করার সময় আপনার ব্যবহার করা উচিত

GLib.timeout_add_seconds(PING_FREQUENCY, self.doWork)

এটি গ্লিবকে গ্রুপ টাইমারগুলিতে অনুমতি দেয় এবং সেইজন্য শক্তি সঞ্চয় করে, যা মোবাইল ডিভাইসের জন্য গুরুত্বপূর্ণ। ডকুমেন্টেশন থেকে :

টাইমারদের একই সময়ে গুলি চালানোর ফলে আরও বেশি পাওয়ার এবং সিপিইউ দক্ষ আচরণের ফলস্বরূপ ফলাফল হয় যদি আপনার টাইমারটি যদি কয়েক সেকেন্ডের বহুগুণে থাকে এবং আপনাকে এখন থেকে ঠিক এক সেকেন্ডের প্রথম টাইমারের প্রয়োজন না হয়, তবে গ্লিব.টাইমআউট_এডিডি_সেকেন্ডস ব্যবহার ( ) glib.timeout_add () এর চেয়ে বেশি পছন্দ করা হয়।


4
এটি থ্রেডিং ব্যবহারের চেয়ে ভাল মনে হয়। বিশেষত যেহেতু থ্রেডিং অদ্ভুত বাগ এবং লকআপগুলির কারণ হতে পারে যদি আপনি সত্যই জানেন না যে আপনি কী করছেন।
টিমো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.