我已经经历了许多Python相关的导入问题,但我无法理解这个问题/让它工作......
我的目录结构是:
Driver.py
A/
Account.py
__init__.py
B/
Test.py
__init__.py
Run Code Online (Sandbox Code Playgroud)
====================
Driver.py
from B import Test
Run Code Online (Sandbox Code Playgroud)
=========
Account.py
class Account:
def __init__(self):
self.money = 0
Run Code Online (Sandbox Code Playgroud)
====================
Test.py
from ..A import Account
Run Code Online (Sandbox Code Playgroud)
==================
当我试图跑
python Driver.py
我收到了错误
Traceback(最近一次调用最后一次):
来自B进口测试
Driver.py从..A导入帐户输入"B/Test.py",第1行ValueError:尝试相对导入超出toplevel包
我的脚本如下
if ps ax | grep -v grep | grep ./program > /dev/null
then
exit
else
echo "---------------------------------------------------" >> Debug.log
echo "Starting program at: $(date)" >> Debug.log
./program >> Debug.log 2>&1
fi
exit
Run Code Online (Sandbox Code Playgroud)
通过crontab,这个脚本每分钟运行一次.它检查某个程序是否正在运行,如果是,那么,如果不是,则启动它.
现在我想在每次脚本运行到Debug.log时附加时间戳,如果它发现./program正在运行.所以在线下then,我补充说:
echo "Time: $(date)" >> Debug.log
Run Code Online (Sandbox Code Playgroud)
此命令不向Debug.log输出任何内容.但它直接从命令行工作.为什么会这样,我可以解决这个问题吗?
我为ScrollBars属性选择了"None",但是这使我无法使用鼠标滚轮滚动.我要么删除滚动条或隐藏它们,同时仍然允许鼠标滚轮滚动.这可能吗?
我解决了它(8个小时都无法回答......)
订阅MouseWheel事件并在函数中...
if(e.Delta > 0 && DGV.FirstDisplayedScrollingIndex > 0)
{
DGV.FirstDisplayedScrollingIndex--;
}
else if(e.Delta < 0)
{
DGV.FirstDisplayedScrollingIndex++;
}
Run Code Online (Sandbox Code Playgroud) 我有class A一个public std::list<int> object list_.
Class B,带有指向类的指针A a.
在课堂上的方法B......
std::list my_list = a->list_;
my_list.push_back(1);
my_list.push_back(2);
my_list.push_back(3);
Run Code Online (Sandbox Code Playgroud)
我知道my_list实际上是list_的副本,这就是为什么更改不会反映到原始列表中的原因.对于这个特定领域,我试图避免通过引用传递.无需执行以下操作......
a->list_.push_back(1);
a->list_.push_back(2);
a->list_.push_back(3);
Run Code Online (Sandbox Code Playgroud)
我是否有可能直接引用A中的list_对象,而不必a每次都经过对象?
谢谢
我试图有效地将地图的内容转换为字符串以通过套接字发送.到目前为止我有这个...
char buffer[1024];
for (iter = my_mapy.begin(); iter != my_map.end();iter++)
{
sprintf(buffer, "%s|%ld|%d", buffer, iter->first, iter->second);
}
Run Code Online (Sandbox Code Playgroud)
虽然这是有效的,但我想知道它是否效率低下.Google搜索将int/long/double转换为string的最有效方法导致了sprintf,这就是我使用它的原因.但我担心缓冲区的内容会被反复复制,而我只是想追加到最后.这是正确的,如果是这样,有没有更好的方法来做到这一点?性能和速度是第一优先.
谢谢!
我之前正在使用pthread_mutex_ts.代码有时会卡住.我有几行代码分散在我包装的函数中......
pthread_mutex_lock(&map_mutex);// Line 1
//critical code involving reading/writing wrapped around a mutex //Line 2
pthread_mutex_unlock(&map_mutex); //Line 3
Run Code Online (Sandbox Code Playgroud)
不确定代码被卡住的方式/位置,我切换pthread_mutex_t到了boost:mutex
1)如果我只是用第1行替换第1行和第3 boost::lock_guard<boost::mutex> lock(map_mutex);行,并且一切都运行良好,那么pthread实现可能会出现什么问题?
2)我是否通过切换到提升而放弃了性能.这里的关键部分非常时间敏感,所以我希望互斥体非常轻巧.(C++,redhat)
我知道一旦声明你就无法改变地图的顺序.相反,我在一个结构中尝试这个:
struct MyStruct
{
std::map<int, double>* my_map;
MyStruct(bool dir)
{
if(dir)
{
my_map = new std::map<int, double, std::less<int> >;
}
else
{
my_map = new std::map<int, double, std::greater<int> >;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,并抱怨我正在改变else条件下的类型.有没有解决的办法?我能想到的唯一方法是编写自己的比较器并创建一个封装的对象bool dir,这似乎是多余的.
我有DataGridView dgv.在dgv的一个单元格中,我有一个带灰色阴影的单元格(其余单元格为空白和白色).我希望能够将该阴影单元格拖动到该列中的另一个单元格,并从前一个单元格的位置,值,行#,列#等以及新单元格的位置,值,行/列中获取信息.这可能吗?这非常类似于棋盘,其中"棋子"通过拖动从一个单元格移动到另一个单元格.
这是我的班级栏:
class Bar:
def __init__(self, start, end, open, volume, high=open, low=open, last=open):
self.start = start
self.end = end
self.open = open
self.high = high
self.low = low
self.last = last
self.volume = int(volume)
def __str__(self):
return self.start.strftime("%m/%d/%Y\t%H:%M:%S") + "\t" + self.end.strftime("%H:%M:%S") + "\t" +str(self.open) + "\t" + str(self.high) + "\t" + str(self.low) + "\t" + str(self.last) + "\t" + str(self.volume)
Run Code Online (Sandbox Code Playgroud)
1)我试图初始化高,低和最后的任何打开.这是正确的方法吗?
2)当我打印(str(bar))我得到有趣的输出,如...
03/13/2012 12:30:00 13:30:00 138.91 <built-in function open> 138.7 <built-in function open> 13177656
我有以下内容:
class Trade:
def __init__(self):
entry = [0, 1, 2, 3]
exit = [1, 2, 3, 4]
met = [0, 0, 0, 0]
self.stats = zip(entry, exit, met)
t = Trade()
for entry, exit, met in t.stats:
met = 1
for entry, exit, met in t.stats:
print(entry, exit, met)
Run Code Online (Sandbox Code Playgroud)
我期待所有的值met都是1.但事实并非如此.这是什么原因,我怎样才能使修改met反映在实例中Trade class t.for语句是否生成t.stats的副本而不是迭代其原始副本?
参考这个,如果我有std::map<double, Object> my_map,是以下等价物?
Object& obj = my_map[1];
Object obj = my_map[1];
Run Code Online (Sandbox Code Playgroud)
我知道operator[]通过引用返回,第一种方式,正确的方法,而不是创建副本,或者它们是相同的.如果它们是相同的,我不确定它们为什么会这样.
同样,如果我也有......
std::map<double, Object>::iterator it;
Run Code Online (Sandbox Code Playgroud)
以下是类似的吗?
Object& obj = it->second;
Object obj = it->second;
Run Code Online (Sandbox Code Playgroud)