msg = 'afdssav'
MYQ = deque(msg)
MYPQ.append('asdf')
Run Code Online (Sandbox Code Playgroud)
在这里,我试图创建一个字符串deque,但是当我弹出元素或尝试使用Python 2.7从中读取元素时,我会通过char获取char.
我怎样才能使它以与插入字符串相同的方式返回字符串?
即我想MYQ[1]成为'asdf'并MYQ.pop()返回msg.
我的HMI由2个按钮组成:启动和停止,还有一个字段QStatusBar,用于将信息从线程打印到GUI.当我"启动"时,我启动一个可以用Stop按钮中断的线程.我想要做的是在线程中的某个点打开一个弹出窗口,以便在线程暂停时为用户提供选择.
from PyQt4 import QtCore, QtGui
import sys
import os
import time
from PyQt4.QtGui import QApplication, QDialog, QListWidgetItem, QListWidget, QIcon
from test_bench_tool2 import Ui_MainWindow
from popup import Ui_popup
"""Class poppup window(continue/quit)"""
class MyPopup(QtGui.QDialog):
def __init__(self,type):
super(MyPopup, self).__init__()
self.res = 0
self.type=type
self.ui = Ui_popup()
self.ui.setupUi(self)
QtCore.QObject.connect(self.ui.Quit,QtCore.SIGNAL("clicked()"),self.showDialogstop)
QtCore.QObject.connect(self.ui.Continue,QtCore.SIGNAL("clicked()"),self.showDialogcontinue)
def showDialogcontinue(self):
self.res=1
self.close()
def showDialogstop(self):
self.res=0
self.close()
class MyThread(QtCore.QThread):
Statuschanged = QtCore.pyqtSignal(str)
popupmodechanged = QtCore.pyqtSignal(str)
def __init__(self, parent=None):
super(MyThread, self).__init__(parent=parent)
self.Status_auto = ''
self.dialog = MyPopup('toto')
self.Status_auto +=''
self.popup=''
self.answer=''
def run(self): …Run Code Online (Sandbox Code Playgroud) 什么数据结构最适合存储循环中的对象?例如,我有一个对象列表,A,B,C,D,E,我需要循环处理它们,A-> B-> C-> D-> E,然后是E-> A-> B- > C-> d -...
处理这种情况的最佳方法是什么?谢谢.我正在考虑一个循环数组,但根据维基百科,循环数组最好用于实现一个队列.
我在python文档中读到Queue.Queue()是一种在不同线程之间传递变量的安全方法.我真的不知道多线程存在安全问题.对于我的应用程序,我需要使用可以从多个不同线程访问的变量开发多个对象.现在我只是让线程直接访问对象变量.我不会在这里显示我的代码,因为它的方式太多了,但这里有一个例子来展示我正在做的事情.
from threading import Thread
import time
import random
class switch:
def __init__(self,id):
self.id=id
self.is_on = False
def self.toggle():
self.is_on = not self.is_on
switches = []
for i in range(5):
switches[i] = switch(i)
def record_switch():
switch_record = {}
while True:
time.sleep(10)
current = {}
current['time'] = time.srftime(time.time())
for i in switches:
current[i.id] = i.is_on
switch_record.update(current)
def toggle_switch():
while True:
time.sleep(random.random()*100)
for i in switches:
i.toggle()
toggle = Thread(target=toggle_switch(), args = ())
record = Thread(target=record_switch(), args = ())
toggle.start()
record.start()
Run Code Online (Sandbox Code Playgroud)
据我所知,队列对象只能用于放置和获取值,这显然不适用于我.我在这里"安全"吗?如果没有,我该如何编程,以便我可以安全地从多个不同的线程访问变量?
我正在研究Laravel框架,我遇到了一些队列问题.Laravel提供了一个统一的API来处理队列,我正在研究它.Laravel提供的方法之一是Queue::later(DateTime|int $delay, string $job, mixed $data = '', string $queue = null);
所以,我实现了我的工作类:
<?php
class SendEmail {
public function send($job, $data) {
Log::info('JOB: ' . $job->getName());
Log::info('DATA: ' . $data['message']);
}
}
Run Code Online (Sandbox Code Playgroud)
上面,我登录了一个文件,收到的参数.只是想知道它是否有效.我的控制器使用Queue API以这种方式调用作业:
<?php
class MyControllerController extends BaseController {
function index() {
LOG::debug('Index action STARTED');
$date = Carbon::now()->addMinutes(2);
Queue::later($date, 'SendEmail@send', array('message' => 'MY MESSAGE!'));
$view = View::make('index');
LOG::debug('Index action FINISHED');
return $view;
}
}
Run Code Online (Sandbox Code Playgroud)
看看我正在使用Queue::later().我希望send()类的方法SendEmail在2分钟后执行.好吧,我完成了实现空白视图并设置路线.然后我向我的控制器发出GET请求,然后我去检查日志文件.
我在打开日志文件时看到了这个:
[2014-10-02 16:23:11] production.DEBUG: Index action STARTED …Run Code Online (Sandbox Code Playgroud) 在编译期间,此代码不会出错,但代码会突然停止.据我说,问题在于声明的createq函数在哪里q->front=q->rear=NULL.它必须初始化.这有什么不对吗?
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
struct node
{
struct node *next;
int data;
};
struct queue
{
struct node *front;
struct node *rear;
};
struct queue *q;
void createq(struct queue *);
struct queue *insert(struct queue *);
struct queue *delete_q(struct queue *);
struct queue *display(struct queue *);
int main()
{
int option;
printf("\tMAIN MENU\n");
printf("\n1. Create\n2. Display\n3. Insert\n4. Delete\n5. Exit\n");
while(option!=5)
{
printf("\nEnter a choice:");
scanf("%d",&option);
switch(option)
{
case 1:
createq(q);
break;
case 2:
q=display(q);
break;
case 3: …Run Code Online (Sandbox Code Playgroud) 我正在使用Python队列:
q = Queue.Queue()
Run Code Online (Sandbox Code Playgroud)
我正在将某个类的对象放入上述队列中q.put(item).但是,在将项目放入队列之前,我想检查它是否已存在于队列中.有没有办法做到这一点?[没有取出队列中的所有对象然后将它们全部推回]
另外:
我不知道我怎么能真正看到我放入队列的变量(调试时).我正在使用Pydev,而我在variables窗口中看到的只是not_empty和not_full.我怎么能在运行时看到队列中的内容?
我正在使用带有beanstalkd驱动程序的laravel Queues(同样的事情发生在redis上),当我推送一个Queue时它只是不断重复
我做的只是:
beanstalkdphp artisan queue:listenProcessed: SendEmail我以为队列不是空的,所以试着把它冲掉(它是空的),失败的作业表是空的.
第二次测试,停止beanstlkd和队列监听,我有一个控制器简单地说:
..
Queue::push('SendEmail@fire', array('message' => $msg->id));
Run Code Online (Sandbox Code Playgroud)
控制器中根本没有循环,也没有发送电子邮件功能
我需要进行3次或更少的ajax调用,并且响应需要按照请求的顺序附加到dom.
我有以下功能,但问题是我得到的响应在被附加到dom时不一定是正确的顺序.
我不想使用async:false属性,因为它会阻止UI,当然它会受到性能影响.
mod.getArticles = function( ){
//mod.vars.ajaxCount could start at 0-2
for( var i = mod.vars.ajaxCount; i < 3; i++ ){
//mod.vars.pushIds is an array with the ids to be ajaxed in
var id = mod.vars.pushIds[i];
$.ajax({
url: '/ajax/article/' + id + '/',
type: "GET",
dataType: 'HTML',
error: function() {
console.error('get article ajax error');
}
}).done( function( data ) {
if (data.length) {
mod.appendArticle( data );
} else {
console.error('get article ajax output error');
}
});
}
};
Run Code Online (Sandbox Code Playgroud) queue ×10
python ×4
php ×2
ajax ×1
artisan ×1
beanstalkd ×1
c ×1
java ×1
javascript ×1
jquery ×1
laravel ×1
laravel-4 ×1
linked-list ×1
pointers ×1
promise ×1
pydev ×1
pyqt ×1
python-2.7 ×1